<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::LeastMedianSquares&lt; PointT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_least_median_squares.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pri-types">Private 类型</a> &#124;
<a href="classpcl_1_1_least_median_squares-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::LeastMedianSquares&lt; PointT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><b><a class="el" href="classpcl_1_1_least_median_squares.html" title="LeastMedianSquares represents an implementation of the LMedS (Least Median of Squares) algorithm....">LeastMedianSquares</a></b> represents an implementation of the LMedS (Least Median of Squares) algorithm. LMedS is a RANSAC-like model-fitting algorithm that can tolerate up to 50% outliers without requiring thresholds to be set. See Andrea Fusiello's "Elements of Geometric Computer Vision" (<a href="http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/FUSIELLO4/tutorial.html#x1-520007">http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/FUSIELLO4/tutorial.html#x1-520007</a>) for more details.  
 <a href="classpcl_1_1_least_median_squares.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="lmeds_8h_source.html">lmeds.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::LeastMedianSquares&lt; PointT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_least_median_squares.png" usemap="#pcl::LeastMedianSquares_3C_20PointT_20_3E_map" alt=""/>
  <map id="pcl::LeastMedianSquares_3C_20PointT_20_3E_map" name="pcl::LeastMedianSquares_3C_20PointT_20_3E_map">
<area href="classpcl_1_1_sample_consensus.html" alt="pcl::SampleConsensus&lt; PointT &gt;" shape="rect" coords="0,0,212,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a3d4c9aca79cefaeb4d0b042368b44613"><td class="memItemLeft" align="right" valign="top"><a id="a3d4c9aca79cefaeb4d0b042368b44613"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_least_median_squares.html">LeastMedianSquares</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a3d4c9aca79cefaeb4d0b042368b44613"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a884ee3dd1d3103431da5e1264f4c4e90"><td class="memItemLeft" align="right" valign="top"><a id="a884ee3dd1d3103431da5e1264f4c4e90"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_least_median_squares.html">LeastMedianSquares</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a884ee3dd1d3103431da5e1264f4c4e90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_sample_consensus"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_sample_consensus')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_sample_consensus.html">pcl::SampleConsensus&lt; PointT &gt;</a></td></tr>
<tr class="memitem:aaf12b77bbf0507ff0c7e28e4844d894f inherit pub_types_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="aaf12b77bbf0507ff0c7e28e4844d894f"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_sample_consensus.html">SampleConsensus</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:aaf12b77bbf0507ff0c7e28e4844d894f inherit pub_types_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfd144d2c057d7b997877d5cce90c5a5 inherit pub_types_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="abfd144d2c057d7b997877d5cce90c5a5"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_sample_consensus.html">SampleConsensus</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:abfd144d2c057d7b997877d5cce90c5a5 inherit pub_types_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a35badc9e2e73faf1f563d2a8c9aac68c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_least_median_squares.html#a35badc9e2e73faf1f563d2a8c9aac68c">LeastMedianSquares</a> (const SampleConsensusModelPtr &amp;model)</td></tr>
<tr class="memdesc:a35badc9e2e73faf1f563d2a8c9aac68c"><td class="mdescLeft">&#160;</td><td class="mdescRight">LMedS (Least Median of Squares) main constructor  <a href="classpcl_1_1_least_median_squares.html#a35badc9e2e73faf1f563d2a8c9aac68c">更多...</a><br /></td></tr>
<tr class="separator:a35badc9e2e73faf1f563d2a8c9aac68c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78a16392690f9ac26a3a02036e2586d8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_least_median_squares.html#a78a16392690f9ac26a3a02036e2586d8">LeastMedianSquares</a> (const SampleConsensusModelPtr &amp;model, double threshold)</td></tr>
<tr class="memdesc:a78a16392690f9ac26a3a02036e2586d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">LMedS (Least Median of Squares) main constructor  <a href="classpcl_1_1_least_median_squares.html#a78a16392690f9ac26a3a02036e2586d8">更多...</a><br /></td></tr>
<tr class="separator:a78a16392690f9ac26a3a02036e2586d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8373d97493a15e66b9b09ddf68cdab4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_least_median_squares.html#aa8373d97493a15e66b9b09ddf68cdab4">computeModel</a> (int debug_verbosity_level=0)</td></tr>
<tr class="memdesc:aa8373d97493a15e66b9b09ddf68cdab4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the actual model and find the inliers  <a href="classpcl_1_1_least_median_squares.html#aa8373d97493a15e66b9b09ddf68cdab4">更多...</a><br /></td></tr>
<tr class="separator:aa8373d97493a15e66b9b09ddf68cdab4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_sample_consensus"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_sample_consensus')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_sample_consensus.html">pcl::SampleConsensus&lt; PointT &gt;</a></td></tr>
<tr class="memitem:aee8d85e0b1062f5e18d43609e6ac59bf inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#aee8d85e0b1062f5e18d43609e6ac59bf">SampleConsensus</a> (const SampleConsensusModelPtr &amp;model, bool random=false)</td></tr>
<tr class="memdesc:aee8d85e0b1062f5e18d43609e6ac59bf inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for base SAC.  <a href="classpcl_1_1_sample_consensus.html#aee8d85e0b1062f5e18d43609e6ac59bf">更多...</a><br /></td></tr>
<tr class="separator:aee8d85e0b1062f5e18d43609e6ac59bf inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4937e9bc2a8acf15ae97c7d763090a inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#aac4937e9bc2a8acf15ae97c7d763090a">SampleConsensus</a> (const SampleConsensusModelPtr &amp;model, double threshold, bool random=false)</td></tr>
<tr class="memdesc:aac4937e9bc2a8acf15ae97c7d763090a inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for base SAC.  <a href="classpcl_1_1_sample_consensus.html#aac4937e9bc2a8acf15ae97c7d763090a">更多...</a><br /></td></tr>
<tr class="separator:aac4937e9bc2a8acf15ae97c7d763090a inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca6f09bf3c664bfed2ae36e81909e9f2 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#aca6f09bf3c664bfed2ae36e81909e9f2">setSampleConsensusModel</a> (const SampleConsensusModelPtr &amp;model)</td></tr>
<tr class="memdesc:aca6f09bf3c664bfed2ae36e81909e9f2 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the Sample Consensus model to use.  <a href="classpcl_1_1_sample_consensus.html#aca6f09bf3c664bfed2ae36e81909e9f2">更多...</a><br /></td></tr>
<tr class="separator:aca6f09bf3c664bfed2ae36e81909e9f2 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a101dfdcc9098f463db135a7655a438 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a1a101dfdcc9098f463db135a7655a438"></a>
SampleConsensusModelPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a1a101dfdcc9098f463db135a7655a438">getSampleConsensusModel</a> () const</td></tr>
<tr class="memdesc:a1a101dfdcc9098f463db135a7655a438 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the Sample Consensus model used. <br /></td></tr>
<tr class="separator:a1a101dfdcc9098f463db135a7655a438 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a138ae225b2d724491a7abdfcfd2b4de5 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a138ae225b2d724491a7abdfcfd2b4de5"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a138ae225b2d724491a7abdfcfd2b4de5">~SampleConsensus</a> ()</td></tr>
<tr class="memdesc:a138ae225b2d724491a7abdfcfd2b4de5 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor for base SAC. <br /></td></tr>
<tr class="separator:a138ae225b2d724491a7abdfcfd2b4de5 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1a06ccc992dfc9e65e70f5876f3c8d3 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#ae1a06ccc992dfc9e65e70f5876f3c8d3">setDistanceThreshold</a> (double threshold)</td></tr>
<tr class="memdesc:ae1a06ccc992dfc9e65e70f5876f3c8d3 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the distance to model threshold.  <a href="classpcl_1_1_sample_consensus.html#ae1a06ccc992dfc9e65e70f5876f3c8d3">更多...</a><br /></td></tr>
<tr class="separator:ae1a06ccc992dfc9e65e70f5876f3c8d3 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a575ab4a3facfdc8e007f427a96798d7d inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a575ab4a3facfdc8e007f427a96798d7d"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a575ab4a3facfdc8e007f427a96798d7d">getDistanceThreshold</a> ()</td></tr>
<tr class="memdesc:a575ab4a3facfdc8e007f427a96798d7d inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the distance to model threshold, as set by the user. <br /></td></tr>
<tr class="separator:a575ab4a3facfdc8e007f427a96798d7d inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8558bc2462b6da4a2f88b2efc1ad571 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#af8558bc2462b6da4a2f88b2efc1ad571">setMaxIterations</a> (int max_iterations)</td></tr>
<tr class="memdesc:af8558bc2462b6da4a2f88b2efc1ad571 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum number of iterations.  <a href="classpcl_1_1_sample_consensus.html#af8558bc2462b6da4a2f88b2efc1ad571">更多...</a><br /></td></tr>
<tr class="separator:af8558bc2462b6da4a2f88b2efc1ad571 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5c7f23a52dc184d8cc56790d63d375a inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="aa5c7f23a52dc184d8cc56790d63d375a"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#aa5c7f23a52dc184d8cc56790d63d375a">getMaxIterations</a> ()</td></tr>
<tr class="memdesc:aa5c7f23a52dc184d8cc56790d63d375a inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of iterations, as set by the user. <br /></td></tr>
<tr class="separator:aa5c7f23a52dc184d8cc56790d63d375a inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd6b8031622746d8b6aada91ffbaa7ee inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#acd6b8031622746d8b6aada91ffbaa7ee">setProbability</a> (double probability)</td></tr>
<tr class="memdesc:acd6b8031622746d8b6aada91ffbaa7ee inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the desired probability of choosing at least one sample free from outliers.  <a href="classpcl_1_1_sample_consensus.html#acd6b8031622746d8b6aada91ffbaa7ee">更多...</a><br /></td></tr>
<tr class="separator:acd6b8031622746d8b6aada91ffbaa7ee inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afafb66faf0cbfa464cd884127bafdac3 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="afafb66faf0cbfa464cd884127bafdac3"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#afafb66faf0cbfa464cd884127bafdac3">getProbability</a> ()</td></tr>
<tr class="memdesc:afafb66faf0cbfa464cd884127bafdac3 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtain the probability of choosing at least one sample free from outliers, as set by the user. <br /></td></tr>
<tr class="separator:afafb66faf0cbfa464cd884127bafdac3 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7c059e9ee5b5180bb7fb02b0d947c36 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#af7c059e9ee5b5180bb7fb02b0d947c36">refineModel</a> (const double sigma=3.0, const unsigned int max_iterations=1000)</td></tr>
<tr class="memdesc:af7c059e9ee5b5180bb7fb02b0d947c36 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Refine the model found. This loops over the model coefficients and optimizes them together with the set of inliers, until the change in the set of inliers is minimal.  <a href="classpcl_1_1_sample_consensus.html#af7c059e9ee5b5180bb7fb02b0d947c36">更多...</a><br /></td></tr>
<tr class="separator:af7c059e9ee5b5180bb7fb02b0d947c36 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56b0649ebe9cd4b8a48442f864f5e83c inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a56b0649ebe9cd4b8a48442f864f5e83c">getRandomSamples</a> (const boost::shared_ptr&lt; std::vector&lt; int &gt; &gt; &amp;indices, size_t nr_samples, std::set&lt; int &gt; &amp;indices_subset)</td></tr>
<tr class="memdesc:a56b0649ebe9cd4b8a48442f864f5e83c inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a set of randomly selected indices.  <a href="classpcl_1_1_sample_consensus.html#a56b0649ebe9cd4b8a48442f864f5e83c">更多...</a><br /></td></tr>
<tr class="separator:a56b0649ebe9cd4b8a48442f864f5e83c inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae09f01cda7605910955b0aee847ea849 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#ae09f01cda7605910955b0aee847ea849">getModel</a> (std::vector&lt; int &gt; &amp;model)</td></tr>
<tr class="memdesc:ae09f01cda7605910955b0aee847ea849 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the best model found so far.  <a href="classpcl_1_1_sample_consensus.html#ae09f01cda7605910955b0aee847ea849">更多...</a><br /></td></tr>
<tr class="separator:ae09f01cda7605910955b0aee847ea849 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ac2013afb3a2feaaeb661f3aa3ccf6b inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a7ac2013afb3a2feaaeb661f3aa3ccf6b">getInliers</a> (std::vector&lt; int &gt; &amp;inliers)</td></tr>
<tr class="memdesc:a7ac2013afb3a2feaaeb661f3aa3ccf6b inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the best set of inliers found so far for this model.  <a href="classpcl_1_1_sample_consensus.html#a7ac2013afb3a2feaaeb661f3aa3ccf6b">更多...</a><br /></td></tr>
<tr class="separator:a7ac2013afb3a2feaaeb661f3aa3ccf6b inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f55f89ee72539f66f7edc8bcf6ce0c2 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a9f55f89ee72539f66f7edc8bcf6ce0c2">getModelCoefficients</a> (Eigen::VectorXf &amp;model_coefficients)</td></tr>
<tr class="memdesc:a9f55f89ee72539f66f7edc8bcf6ce0c2 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the model coefficients of the best model found so far.  <a href="classpcl_1_1_sample_consensus.html#a9f55f89ee72539f66f7edc8bcf6ce0c2">更多...</a><br /></td></tr>
<tr class="separator:a9f55f89ee72539f66f7edc8bcf6ce0c2 inherit pub_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private 类型</h2></td></tr>
<tr class="memitem:aff54a5e9ac7ce97f6943c5a03eaaa5c2"><td class="memItemLeft" align="right" valign="top"><a id="aff54a5e9ac7ce97f6943c5a03eaaa5c2"></a>
typedef <a class="el" href="classpcl_1_1_sample_consensus_model.html">SampleConsensusModel</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>SampleConsensusModelPtr</b></td></tr>
<tr class="separator:aff54a5e9ac7ce97f6943c5a03eaaa5c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_sample_consensus"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_sample_consensus')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_sample_consensus.html">pcl::SampleConsensus&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a7a731d68a379a0a6442deae93e85d3a8 inherit pro_methods_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a7a731d68a379a0a6442deae93e85d3a8"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a7a731d68a379a0a6442deae93e85d3a8">rnd</a> ()</td></tr>
<tr class="memdesc:a7a731d68a379a0a6442deae93e85d3a8 inherit pro_methods_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boost-based random number generator. <br /></td></tr>
<tr class="separator:a7a731d68a379a0a6442deae93e85d3a8 inherit pro_methods_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_sample_consensus"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_sample_consensus')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_sample_consensus.html">pcl::SampleConsensus&lt; PointT &gt;</a></td></tr>
<tr class="memitem:aa4953d080c1ab4223cde8ff8d8cabc52 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="aa4953d080c1ab4223cde8ff8d8cabc52"></a>
SampleConsensusModelPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#aa4953d080c1ab4223cde8ff8d8cabc52">sac_model_</a></td></tr>
<tr class="memdesc:aa4953d080c1ab4223cde8ff8d8cabc52 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">The underlying data model used (i.e. what is it that we attempt to search for). <br /></td></tr>
<tr class="separator:aa4953d080c1ab4223cde8ff8d8cabc52 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e04da16522ae180cb8cc2e6ef0d2244 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a0e04da16522ae180cb8cc2e6ef0d2244"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a0e04da16522ae180cb8cc2e6ef0d2244">model_</a></td></tr>
<tr class="memdesc:a0e04da16522ae180cb8cc2e6ef0d2244 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">The model found after the last computeModel () as point cloud indices. <br /></td></tr>
<tr class="separator:a0e04da16522ae180cb8cc2e6ef0d2244 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0115926eadf78f7bc1ad4675659d8343 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a0115926eadf78f7bc1ad4675659d8343"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a0115926eadf78f7bc1ad4675659d8343">inliers_</a></td></tr>
<tr class="memdesc:a0115926eadf78f7bc1ad4675659d8343 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">The indices of the points that were chosen as inliers after the last computeModel () call. <br /></td></tr>
<tr class="separator:a0115926eadf78f7bc1ad4675659d8343 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96f852dfca500689684313d3cb7f84b1 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a96f852dfca500689684313d3cb7f84b1"></a>
Eigen::VectorXf&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a96f852dfca500689684313d3cb7f84b1">model_coefficients_</a></td></tr>
<tr class="memdesc:a96f852dfca500689684313d3cb7f84b1 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">The coefficients of our model computed directly from the model found. <br /></td></tr>
<tr class="separator:a96f852dfca500689684313d3cb7f84b1 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a025913cc2a2099a553fe7842aa792326 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a025913cc2a2099a553fe7842aa792326"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a025913cc2a2099a553fe7842aa792326">probability_</a></td></tr>
<tr class="memdesc:a025913cc2a2099a553fe7842aa792326 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Desired probability of choosing at least one sample free from outliers. <br /></td></tr>
<tr class="separator:a025913cc2a2099a553fe7842aa792326 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a471e062f42e9cb4ae9d77107cc135acb inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a471e062f42e9cb4ae9d77107cc135acb"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a471e062f42e9cb4ae9d77107cc135acb">iterations_</a></td></tr>
<tr class="memdesc:a471e062f42e9cb4ae9d77107cc135acb inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Total number of internal loop iterations that we've done so far. <br /></td></tr>
<tr class="separator:a471e062f42e9cb4ae9d77107cc135acb inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1c52d7d8be8f058feac1f9241bf305e inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="aa1c52d7d8be8f058feac1f9241bf305e"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#aa1c52d7d8be8f058feac1f9241bf305e">threshold_</a></td></tr>
<tr class="memdesc:aa1c52d7d8be8f058feac1f9241bf305e inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Distance to model threshold. <br /></td></tr>
<tr class="separator:aa1c52d7d8be8f058feac1f9241bf305e inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5ca8dbf21b2a1c6ed9c1e8d3eba853c inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="ab5ca8dbf21b2a1c6ed9c1e8d3eba853c"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#ab5ca8dbf21b2a1c6ed9c1e8d3eba853c">max_iterations_</a></td></tr>
<tr class="memdesc:ab5ca8dbf21b2a1c6ed9c1e8d3eba853c inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum number of iterations before giving up. <br /></td></tr>
<tr class="separator:ab5ca8dbf21b2a1c6ed9c1e8d3eba853c inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3860965324830148970ba99223663aa2 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="a3860965324830148970ba99223663aa2"></a>
boost::mt19937&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#a3860965324830148970ba99223663aa2">rng_alg_</a></td></tr>
<tr class="memdesc:a3860965324830148970ba99223663aa2 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boost-based random number generator algorithm. <br /></td></tr>
<tr class="separator:a3860965324830148970ba99223663aa2 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa23f804b4957312659adca2068e05682 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memItemLeft" align="right" valign="top"><a id="aa23f804b4957312659adca2068e05682"></a>
boost::shared_ptr&lt; boost::uniform_01&lt; boost::mt19937 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_sample_consensus.html#aa23f804b4957312659adca2068e05682">rng_</a></td></tr>
<tr class="memdesc:aa23f804b4957312659adca2068e05682 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boost-based random number generator distribution. <br /></td></tr>
<tr class="separator:aa23f804b4957312659adca2068e05682 inherit pro_attribs_classpcl_1_1_sample_consensus"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT&gt;<br />
class pcl::LeastMedianSquares&lt; PointT &gt;</h3>

<p><b><a class="el" href="classpcl_1_1_least_median_squares.html" title="LeastMedianSquares represents an implementation of the LMedS (Least Median of Squares) algorithm....">LeastMedianSquares</a></b> represents an implementation of the LMedS (Least Median of Squares) algorithm. LMedS is a RANSAC-like model-fitting algorithm that can tolerate up to 50% outliers without requiring thresholds to be set. See Andrea Fusiello's "Elements of Geometric Computer Vision" (<a href="http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/FUSIELLO4/tutorial.html#x1-520007">http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/FUSIELLO4/tutorial.html#x1-520007</a>) for more details. </p>
<dl class="section author"><dt>作者</dt><dd>Radu B. Rusu </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="a35badc9e2e73faf1f563d2a8c9aac68c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35badc9e2e73faf1f563d2a8c9aac68c">&#9670;&nbsp;</a></span>LeastMedianSquares() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classpcl_1_1_least_median_squares.html">pcl::LeastMedianSquares</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::<a class="el" href="classpcl_1_1_least_median_squares.html">LeastMedianSquares</a> </td>
          <td>(</td>
          <td class="paramtype">const SampleConsensusModelPtr &amp;&#160;</td>
          <td class="paramname"><em>model</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>LMedS (Least Median of Squares) main constructor </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">model</td><td>a Sample Consensus model </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        : SampleConsensus&lt;PointT&gt; (model)</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;      {</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;        <span class="comment">// Maximum number of trials before we give up.</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus.html#ab5ca8dbf21b2a1c6ed9c1e8d3eba853c">max_iterations_</a> = 50;</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_html_ab5ca8dbf21b2a1c6ed9c1e8d3eba853c"><div class="ttname"><a href="classpcl_1_1_sample_consensus.html#ab5ca8dbf21b2a1c6ed9c1e8d3eba853c">pcl::SampleConsensus&lt; PointT &gt;::max_iterations_</a></div><div class="ttdeci">int max_iterations_</div><div class="ttdoc">Maximum number of iterations before giving up.</div><div class="ttdef"><b>Definition:</b> sac.h:331</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a78a16392690f9ac26a3a02036e2586d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78a16392690f9ac26a3a02036e2586d8">&#9670;&nbsp;</a></span>LeastMedianSquares() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classpcl_1_1_least_median_squares.html">pcl::LeastMedianSquares</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::<a class="el" href="classpcl_1_1_least_median_squares.html">LeastMedianSquares</a> </td>
          <td>(</td>
          <td class="paramtype">const SampleConsensusModelPtr &amp;&#160;</td>
          <td class="paramname"><em>model</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>threshold</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>LMedS (Least Median of Squares) main constructor </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">model</td><td>a Sample Consensus model </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">threshold</td><td>distance to model threshold </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        : SampleConsensus&lt;PointT&gt; (model, threshold)</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      {</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        <span class="comment">// Maximum number of trials before we give up.</span></div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        <a class="code" href="classpcl_1_1_sample_consensus.html#ab5ca8dbf21b2a1c6ed9c1e8d3eba853c">max_iterations_</a> = 50;</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="aa8373d97493a15e66b9b09ddf68cdab4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8373d97493a15e66b9b09ddf68cdab4">&#9670;&nbsp;</a></span>computeModel()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1_least_median_squares.html">pcl::LeastMedianSquares</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::computeModel </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>debug_verbosity_level</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute the actual model and find the inliers </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">debug_verbosity_level</td><td>enable/disable on-screen debug information and set the verbosity level </td></tr>
  </table>
  </dd>
</dl>

<p>实现了 <a class="el" href="classpcl_1_1_sample_consensus.html#a6bb9db27c2f0226aaa1e0c2af2b3439e">pcl::SampleConsensus&lt; PointT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;{</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="comment">// Warn and exit if no threshold was set</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_sample_consensus.html#aa1c52d7d8be8f058feac1f9241bf305e">threshold_</a> == std::numeric_limits&lt;double&gt;::max())</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  {</div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::LeastMedianSquares::computeModel] No threshold set!\n&quot;</span>);</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  }</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <a class="code" href="classpcl_1_1_sample_consensus.html#a471e062f42e9cb4ae9d77107cc135acb">iterations_</a> = 0;</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="keywordtype">double</span> d_best_penalty = std::numeric_limits&lt;double&gt;::max();</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  std::vector&lt;int&gt; best_model;</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  std::vector&lt;int&gt; selection;</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  Eigen::VectorXf model_coefficients;</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  std::vector&lt;double&gt; distances;</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="keywordtype">int</span> n_inliers_count = 0;</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160; </div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="keywordtype">unsigned</span> skipped_count = 0;</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <span class="comment">// supress infinite loops by just allowing 10 x maximum allowed iterations for invalid model parameters!</span></div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> max_skip = <a class="code" href="classpcl_1_1_sample_consensus.html#ab5ca8dbf21b2a1c6ed9c1e8d3eba853c">max_iterations_</a> * 10;</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  </div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="comment">// Iterate</span></div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="keywordflow">while</span> (<a class="code" href="classpcl_1_1_sample_consensus.html#a471e062f42e9cb4ae9d77107cc135acb">iterations_</a> &lt; <a class="code" href="classpcl_1_1_sample_consensus.html#ab5ca8dbf21b2a1c6ed9c1e8d3eba853c">max_iterations_</a> &amp;&amp; skipped_count &lt; max_skip)</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  {</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="comment">// Get X samples which satisfy the model criteria</span></div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <a class="code" href="classpcl_1_1_sample_consensus.html#aa4953d080c1ab4223cde8ff8d8cabc52">sac_model_</a>-&gt;getSamples (<a class="code" href="classpcl_1_1_sample_consensus.html#a471e062f42e9cb4ae9d77107cc135acb">iterations_</a>, selection);</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">if</span> (selection.empty ()) <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="comment">// Search for inliers in the point cloud for the current plane model M</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_sample_consensus.html#aa4953d080c1ab4223cde8ff8d8cabc52">sac_model_</a>-&gt;computeModelCoefficients (selection, model_coefficients))</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    {</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;      <span class="comment">//iterations_++;</span></div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;      ++skipped_count;</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;      <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    }</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="keywordtype">double</span> d_cur_penalty = 0;</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="comment">// d_cur_penalty = sum (min (dist, threshold))</span></div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160; </div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="comment">// Iterate through the 3d points and calculate the distances from them to the model</span></div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <a class="code" href="classpcl_1_1_sample_consensus.html#aa4953d080c1ab4223cde8ff8d8cabc52">sac_model_</a>-&gt;getDistancesToModel (model_coefficients, distances);</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    </div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="comment">// No distances? The model must not respect the user given constraints</span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <span class="keywordflow">if</span> (distances.empty ())</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    {</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      <span class="comment">//iterations_++;</span></div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      ++skipped_count;</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    }</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    std::sort (distances.begin (), distances.end ());</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="comment">// d_cur_penalty = median (distances)</span></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordtype">size_t</span> mid = <a class="code" href="classpcl_1_1_sample_consensus.html#aa4953d080c1ab4223cde8ff8d8cabc52">sac_model_</a>-&gt;getIndices ()-&gt;size () / 2;</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordflow">if</span> (mid &gt;= distances.size ())</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    {</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;      <span class="comment">//iterations_++;</span></div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      ++skipped_count;</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    }</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="comment">// Do we have a &quot;middle&quot; point or should we &quot;estimate&quot; one ?</span></div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_sample_consensus.html#aa4953d080c1ab4223cde8ff8d8cabc52">sac_model_</a>-&gt;getIndices ()-&gt;size () % 2 == 0)</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;      d_cur_penalty = (sqrt (distances[mid-1]) + sqrt (distances[mid])) / 2;</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      d_cur_penalty = sqrt (distances[mid]);</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160; </div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="comment">// Better match ?</span></div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordflow">if</span> (d_cur_penalty &lt; d_best_penalty)</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    {</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      d_best_penalty = d_cur_penalty;</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <span class="comment">// Save the current model/coefficients selection as being the best so far</span></div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus.html#a0e04da16522ae180cb8cc2e6ef0d2244">model_</a>              = selection;</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus.html#a96f852dfca500689684313d3cb7f84b1">model_coefficients_</a> = model_coefficients;</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    }</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    ++<a class="code" href="classpcl_1_1_sample_consensus.html#a471e062f42e9cb4ae9d77107cc135acb">iterations_</a>;</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keywordflow">if</span> (debug_verbosity_level &gt; 1)</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      PCL_DEBUG (<span class="stringliteral">&quot;[pcl::LeastMedianSquares::computeModel] Trial %d out of %d. Best penalty is %f.\n&quot;</span>, <a class="code" href="classpcl_1_1_sample_consensus.html#a471e062f42e9cb4ae9d77107cc135acb">iterations_</a>, <a class="code" href="classpcl_1_1_sample_consensus.html#ab5ca8dbf21b2a1c6ed9c1e8d3eba853c">max_iterations_</a>, d_best_penalty);</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  }</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_sample_consensus.html#a0e04da16522ae180cb8cc2e6ef0d2244">model_</a>.empty ())</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  {</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keywordflow">if</span> (debug_verbosity_level &gt; 0)</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      PCL_DEBUG (<span class="stringliteral">&quot;[pcl::LeastMedianSquares::computeModel] Unable to find a solution!\n&quot;</span>);</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  }</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// Classify the data points into inliers and outliers</span></div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="comment">// Sigma = 1.4826 * (1 + 5 / (n-d)) * sqrt (M)</span></div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// @note: See &quot;Robust Regression Methods for Computer Vision: A Review&quot;</span></div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">//double sigma = 1.4826 * (1 + 5 / (sac_model_-&gt;getIndices ()-&gt;size () - best_model.size ())) * sqrt (d_best_penalty);</span></div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">//double threshold = 2.5 * sigma;</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="comment">// Iterate through the 3d points and calculate the distances from them to the model again</span></div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <a class="code" href="classpcl_1_1_sample_consensus.html#aa4953d080c1ab4223cde8ff8d8cabc52">sac_model_</a>-&gt;getDistancesToModel (<a class="code" href="classpcl_1_1_sample_consensus.html#a96f852dfca500689684313d3cb7f84b1">model_coefficients_</a>, distances);</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="comment">// No distances? The model must not respect the user given constraints</span></div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="keywordflow">if</span> (distances.empty ())</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  {</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::LeastMedianSquares::computeModel] The model found failed to verify against the given constraints!\n&quot;</span>);</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  }</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  std::vector&lt;int&gt; &amp;indices = *<a class="code" href="classpcl_1_1_sample_consensus.html#aa4953d080c1ab4223cde8ff8d8cabc52">sac_model_</a>-&gt;getIndices ();</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  <span class="keywordflow">if</span> (distances.size () != indices.size ())</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  {</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::LeastMedianSquares::computeModel] Estimated distances (%lu) differs than the normal of indices (%lu).\n&quot;</span>, distances.size (), indices.size ());</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  }</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160; </div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <a class="code" href="classpcl_1_1_sample_consensus.html#a0115926eadf78f7bc1ad4675659d8343">inliers_</a>.resize (distances.size ());</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  <span class="comment">// Get the inliers for the best model found</span></div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  n_inliers_count = 0;</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; distances.size (); ++i)</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <span class="keywordflow">if</span> (distances[i] &lt;= <a class="code" href="classpcl_1_1_sample_consensus.html#aa1c52d7d8be8f058feac1f9241bf305e">threshold_</a>)</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      <a class="code" href="classpcl_1_1_sample_consensus.html#a0115926eadf78f7bc1ad4675659d8343">inliers_</a>[n_inliers_count++] = indices[i];</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160; </div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <span class="comment">// Resize the inliers vector</span></div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <a class="code" href="classpcl_1_1_sample_consensus.html#a0115926eadf78f7bc1ad4675659d8343">inliers_</a>.resize (n_inliers_count);</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <span class="keywordflow">if</span> (debug_verbosity_level &gt; 0)</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    PCL_DEBUG (<span class="stringliteral">&quot;[pcl::LeastMedianSquares::computeModel] Model: %lu size, %d inliers.\n&quot;</span>, <a class="code" href="classpcl_1_1_sample_consensus.html#a0e04da16522ae180cb8cc2e6ef0d2244">model_</a>.size (), n_inliers_count);</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_html_a0115926eadf78f7bc1ad4675659d8343"><div class="ttname"><a href="classpcl_1_1_sample_consensus.html#a0115926eadf78f7bc1ad4675659d8343">pcl::SampleConsensus&lt; PointT &gt;::inliers_</a></div><div class="ttdeci">std::vector&lt; int &gt; inliers_</div><div class="ttdoc">The indices of the points that were chosen as inliers after the last computeModel () call.</div><div class="ttdef"><b>Definition:</b> sac.h:316</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_html_a0e04da16522ae180cb8cc2e6ef0d2244"><div class="ttname"><a href="classpcl_1_1_sample_consensus.html#a0e04da16522ae180cb8cc2e6ef0d2244">pcl::SampleConsensus&lt; PointT &gt;::model_</a></div><div class="ttdeci">std::vector&lt; int &gt; model_</div><div class="ttdoc">The model found after the last computeModel () as point cloud indices.</div><div class="ttdef"><b>Definition:</b> sac.h:313</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_html_a471e062f42e9cb4ae9d77107cc135acb"><div class="ttname"><a href="classpcl_1_1_sample_consensus.html#a471e062f42e9cb4ae9d77107cc135acb">pcl::SampleConsensus&lt; PointT &gt;::iterations_</a></div><div class="ttdeci">int iterations_</div><div class="ttdoc">Total number of internal loop iterations that we've done so far.</div><div class="ttdef"><b>Definition:</b> sac.h:325</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_html_a96f852dfca500689684313d3cb7f84b1"><div class="ttname"><a href="classpcl_1_1_sample_consensus.html#a96f852dfca500689684313d3cb7f84b1">pcl::SampleConsensus&lt; PointT &gt;::model_coefficients_</a></div><div class="ttdeci">Eigen::VectorXf model_coefficients_</div><div class="ttdoc">The coefficients of our model computed directly from the model found.</div><div class="ttdef"><b>Definition:</b> sac.h:319</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_html_aa1c52d7d8be8f058feac1f9241bf305e"><div class="ttname"><a href="classpcl_1_1_sample_consensus.html#aa1c52d7d8be8f058feac1f9241bf305e">pcl::SampleConsensus&lt; PointT &gt;::threshold_</a></div><div class="ttdeci">double threshold_</div><div class="ttdoc">Distance to model threshold.</div><div class="ttdef"><b>Definition:</b> sac.h:328</div></div>
<div class="ttc" id="aclasspcl_1_1_sample_consensus_html_aa4953d080c1ab4223cde8ff8d8cabc52"><div class="ttname"><a href="classpcl_1_1_sample_consensus.html#aa4953d080c1ab4223cde8ff8d8cabc52">pcl::SampleConsensus&lt; PointT &gt;::sac_model_</a></div><div class="ttdeci">SampleConsensusModelPtr sac_model_</div><div class="ttdoc">The underlying data model used (i.e. what is it that we attempt to search for).</div><div class="ttdef"><b>Definition:</b> sac.h:310</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>sample_consensus/include/pcl/sample_consensus/<a class="el" href="lmeds_8h_source.html">lmeds.h</a></li>
<li>sample_consensus/include/pcl/sample_consensus/impl/<a class="el" href="lmeds_8hpp_source.html">lmeds.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_least_median_squares.html">LeastMedianSquares</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
